#ifndef NODE_H
#define NODE_H

#include <vector>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>

class Node
{
protected:
    glm::vec3 _position;
    glm::vec3 _scale;
    glm::vec3 _rotation;

    std::vector<Node *> _children;

public:
    Node(/* args */);
    ~Node();

    glm::vec3 getPosition() const;
    void setPosition(glm::vec3 value);

    glm::vec3 getScale() const;
    void setScale(glm::vec3 value);

    glm::vec3 getRotation() const;
    void setRotation(glm::vec3 value);

    glm::mat4 getMatrix() const;

    std::vector<Node *> getChildren() const;
    void addChild(Node *node);
    virtual void render();
};

#endif